var express = require('express');
var route = express.Router();
//获取用户模型
var User = require('../models/User')
//获取分类模型
var Category = require('../models/Category')
//获取内容模型
var Content = require('../models/Content')
route.use(function(req,res,next){
    if(!req.userInfo.isAdmin){
        res.send('对不起你不能进入')
        reruen;
    }
    next()
})
//后台管理首页
route.get('/',function(req,res,next){
    res.render('admin/index',{
        userInfo:req.userInfo
    })
})
// 后台用户管理
route.get('/user',function(req,res,next){
    //获取数据库中所有用户返回
    /*
    * 从数据库中读取所有的用户数据
    *
    * limit(Number) : 限制获取的数据条数
    *
    * skip(2) : 忽略数据的条数
    *
    * 每页显示2条
    * 1 : 1-2 skip:0 -> (当前页-1) * limit
    * 2 : 3-4 skip:2
    * */
    //获取传来的page页码 默认1
    var page = Number(req.query.page || 1)
    //每页显示多少条
    var limit = 10
    //总页数
    var  pages = 0
    // user.count获取数据库数据的总条数
    User.count().then(function(count){
        //通过查询回来的总条数计算出总页数
        pages = Math.ceil(count / limit)
        //最大不能小于1
        page = Math.max(page,1)
        //最小不能大于pages
        page = Math.min(page,pages)
        //分页
        var skip = (page-1)*limit
        User.find().limit(limit).skip(skip).then(function(user){
            res.render('admin/user_index',{
                userInfo:req.userInfo,
                users:user,
                count: count,
                pages: pages,
                limit: limit,
                page: page,
                url:'/admin/user?page='
            })
        })
    }) 
})

// 后台分类首页
route.get('/category',function(req,res,next){
     //获取数据库中所有用户返回
    /*
    * 从数据库中读取所有的用户数据
    *
    * limit(Number) : 限制获取的数据条数
    *
    * skip(2) : 忽略数据的条数
    *
    * 每页显示2条
    * 1 : 1-2 skip:0 -> (当前页-1) * limit
    * 2 : 3-4 skip:2
    * */
    //获取传来的page页码 默认1
    var page = Number(req.query.page || 1)
    //每页显示多少条
    var limit = 10
    //总页数
    var  pages = 0
    // user.count获取数据库数据的总条数
    Category.count().then(function(count){
        //通过查询回来的总条数计算出总页数
        pages = Math.ceil(count / limit)
        //最大不能小于1
        page = Math.max(page,1)
        //最小不能大于pages
        page = Math.min(page,pages)
        //分页
        var skip = (page-1)*limit
        // sort :1 升序 -1 降序
        Category.find().sort({_id:-1}).limit(limit).skip(skip).then(function(category){
            res.render('admin/category_index',{
                userInfo:req.userInfo,
                categorys:category,
                count: count,
                pages: pages,
                limit: limit,
                page: page,
                url:'/admin/category?page='
            })
        })
    }) 
})

// 后台分类添加
route.get('/category/add',function(req,res,next){
    res.render('admin/category_add',{
        userInfo:req.userInfo,
    })
})

// 后台分类添加
route.post('/category/add',function(req,res,next){
    //获取传来的分类名
    var _name = req.body.name
    if(_name ==''){
        res.render('admin/error',{
            userInfo:req.userInfo,
            message:'名称不能为空',
        })
        return;
    }
    //查询数据库中是否存在
    Category.findOne({
        name:_name
    }).then(function(carInfo){
        if(carInfo){
            res.render('admin/error',{
                userInfo:req.userInfo,
                message:'分类已存在',
            })
            return Promiss.reject()
        }else{
            var cate = new Category({
                name:_name,
            })
            return cate.save();
        }
    }).then(function(){
        res.render('admin/success',{
            userInfo:req.userInfo,
            message:'保存成功',
            url:'/admin/category'
        })
    })
})

/*
* 分类修改
* */
route.get('/category/edit', function(req, res) {
    
        //获取要修改的分类的信息，并且用表单的形式展现出来
        var id = req.query.id || '';
    
        //获取要修改的分类信息
        Category.findOne({
            _id: id
        }).then(function(category) {
            if (!category) {
                res.render('admin/error', {
                    userInfo: req.userInfo,
                    message: '分类信息不存在'
                });
                return Promiss.reject()
            } else {
                res.render('admin/category_edit', {
                    userInfo: req.userInfo,
                    category: category
                });
            }
        })
    
    });
/*
* 分类修改提交
* */
route.post('/category/edit', function(req, res) {
    
        //获取要修改的分类的信息，并且用表单的形式展现出来
        var id = req.query.id || '';
        //post通过req.body获取
        var name = req.body.name || '';
        //获取要修改的分类信息
        Category.findOne({
            _id: id
        }).then(function(category) {
            console.log(category)
            //如果不存在
            if(!category){
                res.render('admin/error', {
                    userInfo: req.userInfo,
                    message: '分类信息不存在'
                });
                return Promiss.reject()
            }else{
                // 如果两次名字相同
                if(name == category.name){
                    res.render('admin/success',{
                        userInfo:req.userInfo,
                        message:'修改成功',
                        url:'/admin/category'
                    })
                    return Promiss.reject()
                }else{
                   //查询数据库中的数据是否与修改的一样
                    return Category.findOne({
                        _id: {$ne: id},
                        name:name
                    })
                }
            }
        }).then(function(sameCategory){
            // 如果存在
            if (sameCategory) {
                res.render('admin/error', {
                    userInfo: req.userInfo,
                    message: '数据库中已经存在同名分类'
                });
                return Promise.reject();
            }else{
                //如果不存在就更新
                return Category.update({
                    _id: id
                }, {
                    name: name
                });
            }
        }).then(function(){
            res.render('admin/success',{
                userInfo:req.userInfo,
                message:'修改成功',
                url:'/admin/category'
            })
        })
    
});

// 删除
route.get('/category/delete', function(req, res) {
    
    //获取要修改的分类的信息，并且用表单的形式展现出来
    var id = req.query.id || '';
    Category.findOne({
        _id: id
    }).then(function(category) {
        console.log(category)
        //如果不存在
        if(!category){
            res.render('admin/error', {
                userInfo: req.userInfo,
                message: '分类信息不存在'
            });
            return Promiss.reject()
        }else{
            return Category.remove({
                _id: id
            })
        }
    }).then(function(){
        res.render('admin/success', {
            userInfo: req.userInfo,
            message: '删除成功',
            url: '/admin/category'
        });
    })
});


// 内容首页数据
route.get('/conten',function(req,res,next){
     //获取数据库中所有用户返回
    /*
    * 从数据库中读取所有的用户数据
    *
    * limit(Number) : 限制获取的数据条数
    *
    * skip(2) : 忽略数据的条数
    *
    * 每页显示2条
    * 1 : 1-2 skip:0 -> (当前页-1) * limit
    * 2 : 3-4 skip:2
    * */
    //获取传来的page页码 默认1
    var page = Number(req.query.page || 1)
    //每页显示多少条
    var limit = 10
    //总页数
    var  pages = 0
    // user.count获取数据库数据的总条数
    Content.count().then(function(count){
        //通过查询回来的总条数计算出总页数
        pages = Math.ceil(count / limit)
        //最大不能小于1
        page = Math.max(page,1)
        //最小不能大于pages
        page = Math.min(page,pages)
        //分页
        var skip = (page-1)*limit
        // sort :1 升序 -1 降序
        Content.find().limit(limit).skip(skip).populate(['category','user']).sort({
            addTime: -1
        }).then(function(content){
            console.log(content)
            res.render('admin/conten_index',{
                userInfo:req.userInfo,
                count: count,
                pages: pages,
                limit: limit,
                page: page,
                contents:content,
                url:'/admin/conten?page='
            })
        })
    }) 
})

// 内容添加数据
route.get('/conten/add',function(req,res,next){
    Category.find().then(function(category){
        res.render('admin/conten_add',{
            userInfo:req.userInfo,
            categorys:category
        })
    })
})

//添加内容保存
route.post('/conten/add',function(req,res,next){
    console.log(req.body)
    if(req.body.category == ''){
        res.render('admin/error', {
            userInfo: req.userInfo,
            message: '内容分类不能为空'
        });
        return;
    }
    if ( req.body.title == '' ) {
        res.render('admin/error', {
            userInfo: req.userInfo,
            message: '内容标题不能为空'
        })
        return;
    }
    new Content({
        category:req.body.category,
        title:req.body.title,
        description:req.body.description,
        content:req.body.content,
        user:req.userInfo._id.toString()
    }).save().then(function(){
        res.render('admin/success', {
            userInfo: req.userInfo,
            message: '内容添加成功',
            url: '/admin/conten'
        });
    })
})

/**
 * 修改内容
 */
route.get('/conten/edit',function(req,res,next){
    var id = req.query.id || '';
    Content.findOne({
        _id: id
    }).then(function(content) {
        console.log(content)
        //如果不存在
        if(!content){
            res.render('admin/error', {
                userInfo: req.userInfo,
                message: '修改内容不存在'
            });
            return Promiss.reject()
        }else{
            Category.find().then(function(category){
                console.log(category)
                res.render('admin/conten_edit', {
                    userInfo: req.userInfo,
                    content:content,
                    categorys:category
                });
            }) 
        }
    })
})

/**
 * 修改提交
 */
route.post('/conten/edit',function(req,res,next){
    var id = req.query.id || '';
    if ( req.body.category == '' ) {
        res.render('admin/error', {
            userInfo: req.userInfo,
            message: '内容分类不能为空'
        })
        return;
    }

    if ( req.body.title == '' ) {
        res.render('admin/error', {
            userInfo: req.userInfo,
            message: '内容标题不能为空'
        })
        return;
    }
    Content.update({
        _id:id,
    },{
        category:req.body.category,
        title:req.body.title,
        description:req.body.description,
        content:req.body.content 
    }).then(function(){
        res.render('admin/success', {
            userInfo: req.userInfo,
            message: '内容修改成功',
            url: '/admin/conten'
        });
    })
})
/*
* 内容删除
* */
route.get('/conten/delete', function(req, res) {
    var id = req.query.id || '';

    Content.remove({
        _id: id
    }).then(function() {
        res.render('admin/success', {
            userInfo: req.userInfo,
            message: '删除成功',
            url: '/admin/conten'
        });
    });
});
module.exports = route